/**
 * @FileName: BulletinController.java
 * @Author
 * @Description:
 * @Date 2016年7月12日 上午11:08:27
 * @CopyRight ZTE Corporation
 */
package cn.hpclub.server.controller.h5;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;

import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.ai.ws.esop.soap.NotifySoapServiceService;
import com.jfinal.aop.Before;
import com.jfinal.ext.interceptor.POST;

import cn.hpclub.server.controller.admin.DataSyncController;

@Before(value = { POST.class })
public class BulletinController extends BaseH5Controller{
    private static Logger log = LoggerFactory.getLogger(DataSyncController.class);

    public void list() throws IOException{
        System.out.println("service.excute.");
        NotifySoapServiceService service = new NotifySoapServiceService();
        String body = getRequestBody();
        log.debug("body=" + body);
        String response = service.getNotifySoapServicePort().queryNotifyInfos(body);
        log.debug("response=" + response);
        renderJson(response);
    }

    private void test() throws IOException{
        int token = getParaToInt("token");
        String body = getRequestBody();
        JSONObject requestRoot = new JSONObject(body);
        JSONObject paramMap = (JSONObject)requestRoot.get("paramMap");
        int pageStart = paramMap.getInt("pageStart");
        System.out.println("body=" + body);
        JSONObject root = new JSONObject();
        root.put("resultCode", "00");
        root.put("resultDesc", "SUCCESS");
        JSONArray notifyInfoList = getList(pageStart);
        root.put("notifyInfoList", notifyInfoList);
        // System.out.println("root=" + root);
        renderJson(root.toString());
    }

    /**
     * @Title: getList
     * @Description:TODO
     * @param pageStart
     *            TODO
     * @return JSONArray
     */

    private JSONArray getList(int pageStart){
        if(pageStart >= 30){
            if(pageStart == 30){
                JSONArray list = new JSONArray();
                JSONObject item = new JSONObject();
                item.put("wdNotifyId", 20604);
                item.put("notifyTitle", "2015年10月21日上线内容11");
                item.put("creator", "谭令");
                item.put("notifyDtlType", "1");
                item.put("createDate", 1445478953001L);
                item.put("notifyContent",
                         "1、运营分析-分析类-产品分析-行业信息化产品分析-移动签到 新模块上线；\r\n2、运营分析-分析类-产品分析-行业信息化产品分析-手机看店月报 新模块上线；请知晓！");
                item.put("readState", "1");
                list.put(item);

                item = new JSONObject();
                item.put("wdNotifyId", 20603);
                item.put("notifyTitle", "2015年10月14日上线内容12");
                item.put("creator", "谭令");
                item.put("notifyDtlType", "1");
                item.put("createDate", 1444817841809L);
                item.put("notifyContent",
                         "1、运营分析-分析类-产品分析-行业信息化产品分析-固话随身行手机副号月报 新模块上线；\r\n2、运营分析-分析类-产品分析-行业信息化产品分析-固话随身行固话副号月报 新模块上线；请知晓！");
                item.put("readState", "1");
                list.put(item);

                item = new JSONObject();
                item.put("wdNotifyId", 20601);
                item.put("notifyTitle", "20150927日数据异常说明13");
                item.put("creator", "谭令");
                item.put("notifyDtlType", "3");
                item.put("createDate", 1443493580934L);
                item.put("notifyContent", "由于接口数据减少，导致账期20150927日数据异常，该数据无法恢复，请使用20150926日数据或者等20150928日数据生成，请知晓！");
                item.put("readState", "1");
                list.put(item);
                return list;
            } else{
                return new JSONArray();
            }
        }
        JSONArray list = new JSONArray();
        JSONObject item = new JSONObject();
        item.put("wdNotifyId", 20604);
        item.put("notifyTitle", "2015年10月21日上线内容");
        item.put("creator", "谭令");
        item.put("notifyDtlType", "1");
        item.put("createDate", 1445478953001L);
        item.put("notifyContent",
                 "1、运营分析-分析类-产品分析-行业信息化产品分析-移动签到 新模块上线；\r\n2、运营分析-分析类-产品分析-行业信息化产品分析-手机看店月报 新模块上线；请知晓！");
        item.put("readState", "1");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20603);
        item.put("notifyTitle", "2015年10月14日上线内容");
        item.put("creator", "谭令");
        item.put("notifyDtlType", "1");
        item.put("createDate", 1444817841809L);
        item.put("notifyContent",
                 "1、运营分析-分析类-产品分析-行业信息化产品分析-固话随身行手机副号月报 新模块上线；\r\n2、运营分析-分析类-产品分析-行业信息化产品分析-固话随身行固话副号月报 新模块上线；请知晓！");
        item.put("readState", "1");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20601);
        item.put("notifyTitle", "20150927日数据异常说明");
        item.put("creator", "谭令");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20150927日数据异常，该数据无法恢复，请使用20150926日数据或者等20150928日数据生成，请知晓！");
        item.put("readState", "1");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明1");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明2");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明3");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明4");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明5");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明6");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明7");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明8");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明9");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        item = new JSONObject();
        item.put("wdNotifyId", 20600);
        item.put("notifyTitle", "20140811日数据异常说明10");
        item.put("creator", "谭谭");
        item.put("notifyDtlType", "3");
        item.put("createDate", 1443493580934L);
        item.put("notifyContent", "由于接口数据减少，导致账期20140811日数据异常，该数据无法恢复，请使用20140811日数据或者等20140812日数据生成，请知晓！");
        item.put("readState", "2");
        list.put(item);

        return list;
    }

    private String getRequestBody() throws IOException{
        System.out.println("getRequestBody");
        InputStream is = getRequest().getInputStream();
        ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
        int ch;

        while((ch = is.read()) != -1){
            bytestream.write(ch);
        }
        is.close();
        byte[] result = bytestream.toByteArray();

        String data = new String(result);
        return data;
    }

    public void tvList(){
        renderJson("{\"ROOT\":{\"RETURN_CODE\":0,\"RETURN_MSG\":\"资费类型错误，不能获取到互联网电视列表\",\"USER_MSG\":\"用户信息\",\"DETAIL_MSG\":\"详细信息\",\"PROMPT_MSG\":\"返回信息\",\"OUT_DATA\":{\"ROW\":[{\"CODE_VALUE\":\"产品编码1|资费编码1\",\"CODE_NAME\":\"资费名称1\",\"BEGIN_VALUE\":\"产品对应的服务编码1\",\"END_VALUE\":\"产品对应的服务名称1\"},{\"CODE_VALUE\":\"产品编码2|资费编码2\",\"CODE_NAME\":\"资费名称2\",\"BEGIN_VALUE\":\"产品对应的服务编码2\",\"END_VALUE\":\"产品对应的服务名称2\"},{\"CODE_VALUE\":\"产品编码3|资费编码3\",\"CODE_NAME\":\"资费名称3\",\"BEGIN_VALUE\":\"产品对应的服务编码3\",\"END_VALUE\":\"产品对应的服务名称3\"}]}}}");
    }

    public void checkSvc(){
        renderJson("{\"ROOT\":{\"RETURN_CODE\":0,\"RETURN_MSG\":\"您选择的资费套餐不可用，请重新选择\",\"USER_MSG\":\"用户信息\",\"DETAIL_MSG\":\"详细信息\",\"PROMPT_MSG\":\"返回信息\"}}");
    }

    public void s1365KdOpen(){
        try{
            String requestBody = getRequestBody();
            log.debug("requestBody=" + requestBody);
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }

    public void sRelChk(){
        try{
            String requestBody = getRequestBody();
            log.debug("requestBody=" + requestBody);
            renderJson("{\"ROOT\":{\"RETURN_CODE\":0,\"RETURN_MSG\":\"宽带套餐不可以用，请重新选择\",\"USER_MSG\":\"用户信息\",\"DETAIL_MSG\":\"详细信息\",\"PROMPT_MSG\":\"返回信息\",\"OUT_DATA\":{\"DATA\":{\"LIMIT_FLAG\":\"Y\"}}}}");
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }

    public void s1093GetPrcInfo(){
        try{
            String requestBody = getRequestBody();
            log.debug("requestBody=" + requestBody);
            renderJson("{\"ROOT\":{\"RETURN_CODE\":0,\"RETURN_MSG\":\"返回错误信息\",\"USER_MSG\":\"用户信息\",\"DETAIL_MSG\":\"详细信息\",\"PROMPT_MSG\":\"返回信息\",\"OUT_DATA\":{\"ENTER_NUM\":5000,\"DOMAINS\":\"tfgkd\",\"BAND_WIDTH\":\"200M\",\"PRE_PAY_FEE\":\"0.00\",\"ENTER_FEE\":\"1.00\",\"MA_FEE\":\"100.00\"}}}");
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }

    public void getBroadPortNum(){
        try{
            String requestBody = getRequestBody();
            log.debug("requestBody=" + requestBody);
            renderJson("{\"ROOT\":{\"RETURN_CODE\":0,\"RETURN_MSG\":\"返回错误信息\",\"USER_MSG\":\"用户信息\",\"DETAIL_MSG\":\"详细信息\",\"PROMPT_MSG\":\"返回信息\",\"OUT_DATA\":{\"IS_VERIFY\":\"Y\",\"PORT_NUM\":200}}}");
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }

    public void sChkBlPhone(){
        try{
            String requestBody = getRequestBody();
            log.debug("requestBody=" + requestBody);
            renderJson("{\"ROOT\":{\"RETURN_CODE\":0,\"RETURN_MSG\":\"success\",\"USER_MSG\":\"用户信息\",\"DETAIL_MSG\":\"详细信息\",\"PROMPT_MSG\":\"返回信息\",\"OUT_DATA\":{\"DATA\":{\"HZ_FLAG\":\"N\"}}}}");
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }

    // sChkSvcNoSc（登录账号校验接口效验账号是否存在）
    public void sChkSvcNoSc(){
        try{
            String requestBody = getRequestBody();
            log.debug("requestBody=" + requestBody);
            String sp = requestBody.substring(requestBody.indexOf("@") - 1, requestBody.indexOf("@"));
            log.debug("sp=" + sp);
            if(requestBody.substring(requestBody.indexOf("@") - 1, requestBody.indexOf("@")).equals("9")){
                renderJson("{\"ROOT\":{\"RETURN_CODE\":0,\"RETURN_MSG\":\"success\",\"USER_MSG\":\"用户信息\",\"DETAIL_MSG\":\"详细信息\",\"PROMPT_MSG\":\"返回信息\"}}");
            } else{
                renderJson("{\"ROOT\":{\"RETURN_CODE\":1,\"RETURN_MSG\":\"success\",\"USER_MSG\":\"用户信息\",\"DETAIL_MSG\":\"详细信息\",\"PROMPT_MSG\":\"返回信息\"}}");
            }
        }
        catch(IOException e){
            e.printStackTrace();
        }
    }

    public void call(){
        String params = "";
        Enumeration<String> paraNames = getParaNames();
        while(paraNames.hasMoreElements()){
            String paramName = (String)paraNames.nextElement();
            String[] paramValues = getParaValues(paramName);
            if(paramValues.length == 1){
                String paramValue = paramValues[0];
                if(paramValue.length() != 0){
                    log.debug("参数：" + paramName + "=" + paramValue);
                }
                if(params.length() == 0){
                    params += paramName + "=" + paramValue;
                } else{
                    params += "&" + paramName + "=" + paramValue;
                }
            }
            log.debug("params:" + params);
            sChkBlPhone();
        }
    }
}
